//
//  BaseTableViewController.swift
//  QingLiuSwift
//
//  Created by xyanl on 2023/9/13.
//

import UIKit
import SnapKit
import Reusable
import JKSwiftExtension

class BaseTableViewController: BaseViewController {
    
    // 懒加载
    var tableView : UITableView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(tableView)
        tableView.snp.makeConstraints { make in
            make.top.equalToSuperview().offset(xIphoneNavStatusBarHeight)
            make.left.equalToSuperview()
            make.right.equalToSuperview()
            make.bottom.equalToSuperview().offset(-xIphoneBottomSafeHeight)
        }
        tableView.register(UINib(nibName: "BaseTableViewCell", bundle: nil), forCellReuseIdentifier: "BaseTableViewCell")
        tableView.register(UINib(nibName: "UITableViewCell", bundle: nil), forCellReuseIdentifier: "UITableViewCell")
    }
    
    /// 初始化，想要改变tableView的style，重写init方法。
    /// - Parameter style: tableView 的 Style
    init(style: UITableView.Style = .plain) {
        super.init(nibName: nil, bundle: nil)
        tableView = createTableView(style: style)
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    /// 创建 UITableView
    /// - Parameter style: style description
    fileprivate func createTableView(style: UITableView.Style) -> YLEmptyDataTableView {
        let tableView = YLEmptyDataTableView(frame: .zero, style: style)
        
        if style != .insetGrouped {
            tableView.backgroundColor = .white
        }
        
        // .never: 第一个cell挨着屏幕顶, 否则是挨着navbar底部
        tableView.contentInsetAdjustmentBehavior = .never
        // 去掉分割线
        tableView.separatorStyle = .none
        // 修复默认分割线, 向右偏移问题
        // tableView.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
        // 分割线颜色
        // tableView.separatorColor = .red
        // iOS 15 默认情况 sectionHeaderTopPadding 会有22个像素的高度，及默认情况，TableView section header 增加22像素的高度
        if #available(iOS 15.0, *) {
            tableView.sectionHeaderTopPadding = 0
        }
        // 解决 textView 长按 放大镜滑动时,tableView也跟着滑动
        tableView.canCancelContentTouches = false
        tableView.delaysContentTouches = true
        
        // 隐藏滚动条
        tableView.showsVerticalScrollIndicator = false
        tableView.showsHorizontalScrollIndicator = false
        
        tableView.estimatedSectionHeaderHeight = 0
        tableView.estimatedSectionFooterHeight = 0
        
        // 滚动时隐藏键盘
        tableView.keyboardDismissMode = .onDrag
        
        // 去掉多余的 cell
        tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: xScreenW, height: CGFLOAT_MIN))
        tableView.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: xScreenW, height: CGFLOAT_MIN))
        
        // 可以选择
        tableView.allowsSelection = true
        
        return tableView
    }
}
